package com.closer.server.biz.organization.service;

import com.closer.server.biz.organization.dto.*;
import com.closer.server.biz.organization.dto.vo.OrganizationVO;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.closer.server.biz.organization.entity.Organization;

/**
 * 组织表 服务层。
 *
 * @author closer
 */
public interface OrganizationService extends IService<Organization> {

    /**
     * 创建组织
     *
     * @param params 创建参数
     * @return 组织ID
     */
    long create(CreateRequest params);

    /**
     * 更新组织信息
     *
     * @param params 更新参数
     * @return 是否更新成功
     */
    boolean updateInfo(UpdateRequest params);

    /**
     * 退出组织
     *
     * @param params 退出参数
     * @return 是否退出成功
     */
    boolean leave(LeaveRequest params);

    /**
     * 加入组织
     *
     * @param params 加入参数
     * @return 是否加入成功
     */
    boolean join(JoinRequest params);

    Page<OrganizationVO> search(SearchRequest params);
}
